#ifndef __EVENT_H_
#define __EVENT_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <common.h>
#include <list.h>
#include <queue.h>


typedef struct EVENT
{
    LIST_NODE   node;       // 事件链表节点
    U08         event;      // 事件状态
    QUEUE       wait;       // 等待该事件的任务队列（每个事件都有一个等待队列）
} EVENT;

/******************************************************************************
* 函数名称: void EventInit(void)
* 功能说明: 初始化事件
* 输入参数: 无
* 输出参数: 无
* 函数返回: 无
* 其它说明: 
******************************************************************************/
void EventInit(void);

/******************************************************************************
* 函数名称: EVENT* SYS_EventCreat(void)
* 功能说明: 创建事件
* 输入参数: 无
* 输出参数: 无
* 函数返回: EVENT*          --事件
* 其它说明: 
******************************************************************************/
EVENT* SYS_EventCreat(void);

/******************************************************************************
* 函数名称: E_RET SYS_WaitEvent(EVENT* event)
* 功能说明: 事件
* 输入参数: EVENT* event    --事件
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET SYS_WaitEvent(EVENT* event);

/******************************************************************************
* 函数名称: E_RET SYS_SetEvent(EVENT* event)
* 功能说明: 设置事件
* 输入参数: EVENT* event    --事件
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET SYS_SetEvent(EVENT* event);

/******************************************************************************
* 函数名称: E_RET SYS_ClearEvent(EVENT* event)
* 功能说明: 清除事件
* 输入参数: EVENT* event    --事件
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET SYS_ClearEvent(EVENT* event);

/******************************************************************************
* 函数名称: E_RET SYS_EventDestory(EVENT* event)
* 功能说明: 销毁事件
* 输入参数: EVENT* event    --事件
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET SYS_EventDestory(EVENT* event);

#ifdef __cplusplus
}
#endif

#endif

